﻿using System;
using System.Configuration;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.DynamicData;
using System.Data.SqlClient;

namespace sistemaAcademicoFinanceiroEscolas.mensalidadeValorInsert
{
    public partial class Insert : System.Web.UI.Page
    {
        protected MetaTable table;

        protected void Page_Init(object sender, EventArgs e)
        {
            DynamicDataManager1.RegisterControl(DetailsView1);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            table = DetailsDataSource.GetTable();
            Title = table.DisplayName;

            if (!Page.IsPostBack)
            {

                SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqlc.Open();

                //carregar anos letivos

                string sqlAnoLetivo = "select * from anoLetivo";

                SqlCommand cmdAnoLetivo = new SqlCommand(sqlAnoLetivo, sqlc);
                SqlDataReader myReaderAnoLetivo = cmdAnoLetivo.ExecuteReader();

                ListItem anoLetivoSelecione = new ListItem();
                anoLetivoSelecione.Value = "0";
                anoLetivoSelecione.Text = "Selecione um Ano Letivo";

                lstAnoLetivo.Items.Add(anoLetivoSelecione);

                while (myReaderAnoLetivo.Read())
                {

                    ListItem anoLetivo = new ListItem();

                    anoLetivo.Value = myReaderAnoLetivo["codigoAnoLetivo"].ToString();
                    anoLetivo.Text = myReaderAnoLetivo["descricaoAnoLetivo"].ToString();

                    lstAnoLetivo.Items.Add(anoLetivo);

                }

                cmdAnoLetivo.Dispose();
                myReaderAnoLetivo.Close();

                //anos letivos carregados

                sqlc.Close();
            }
            
            //fim novo

        }

        protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
        {
            if (e.CommandName == DataControlCommands.CancelCommandName)
            {
                Response.Redirect(table.ListActionPath);
            }
        }

        protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
        {
            if (e.Exception == null || e.ExceptionHandled)
            {
                //início 

                //System.Data.SqlClient.SqlConnection sqlc1 = new System.Data.SqlClient.SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                //sqlc1.Open();

                //string sqlMax = "SELECT MAX(codigoTurma) AS codigoTurma FROM turma";

                //System.Data.SqlClient.SqlCommand cmdPegar = new System.Data.SqlClient.SqlCommand(sqlMax, sqlc1);
                //System.Data.SqlClient.SqlDataReader drPegar = cmdPegar.ExecuteReader();
                //drPegar.Read();

                //string codigoTurmaMax = drPegar["codigoTurma"].ToString();

                //cmdPegar.Dispose();
                //drPegar.Close();

                //if (lstSerie.SelectedValue != "")
                //{
                //    if (lstSerie.SelectedValue != "0")
                //    {
                //        string q = "update turma set codigoSerie=" + lstSerie.SelectedValue + " where codigoTurma=" + codigoTurmaMax;

                //        SqlCommand alterar = new SqlCommand(q, sqlc1);
                //        alterar.ExecuteNonQuery();
                //    }
                //    else
                //    {
                //        string sqlDeletar = "delete from turma where codigoTurma = " + codigoTurmaMax + "";

                //        SqlCommand deletarDetalhe = new SqlCommand(sqlDeletar, sqlc1);
                //        deletarDetalhe.ExecuteNonQuery();

                //        Response.Redirect("Insert.aspx");
                //    }
                //}
                //else
                //{
                //    string sqlDeletar = "delete from turma where codigoTurma = " + codigoTurmaMax + "";

                //    SqlCommand deletarDetalhe = new SqlCommand(sqlDeletar, sqlc1);
                //    deletarDetalhe.ExecuteNonQuery();

                //    Response.Redirect("Insert.aspx");
                //}

                //sqlc1.Close();

                //Response.Redirect(table.ListActionPath);


                // fim do codigo correto 

                //início 

                System.Data.SqlClient.SqlConnection sqlc = new System.Data.SqlClient.SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqlc.Open();

                string sqlMax = "SELECT MAX(codigoMensalidadeValor) AS codigoMensalidadeValor FROM mensalidade";

                System.Data.SqlClient.SqlCommand cmdPegar = new System.Data.SqlClient.SqlCommand(sqlMax, sqlc);
                System.Data.SqlClient.SqlDataReader drPegar = cmdPegar.ExecuteReader();
                drPegar.Read();

                string codigoMensalidadeMax = drPegar["codigoMensalidadeValor"].ToString();

                cmdPegar.Dispose();
                drPegar.Close();

                if (lstAnoLetivo.SelectedValue != "")
                {
                    if (lstAnoLetivo.SelectedValue != "0")
                    {
                        string q = "update mensalidade set codigoAnoLetivo =" + lstAnoLetivo.SelectedValue + ", codigoSerie = " + lstSerie.SelectedValue + " , codigoTurma = " + lstTurma.SelectedValue + " where codigoMensalidadeValor=" + codigoMensalidadeMax;

                        SqlCommand alterar = new SqlCommand(q, sqlc);
                        alterar.ExecuteNonQuery();
                    }
                    else
                    {
                        string sqlDeletar = "delete from mensalidade where codigoMensalidadeValor = " + codigoMensalidadeMax + "";

                        SqlCommand deletarDetalhe = new SqlCommand(sqlDeletar, sqlc);
                        deletarDetalhe.ExecuteNonQuery();

                        Response.Redirect("Insert.aspx");
                    }
                }
                else
                {
                    string sqlDeletar = "delete from mensalidade where codigoMensalidadeValor = " + codigoMensalidadeMax + "";

                    SqlCommand deletarDetalhe = new SqlCommand(sqlDeletar, sqlc);
                    deletarDetalhe.ExecuteNonQuery();

                    Response.Redirect("Insert.aspx");
                }


                // fim do teste 

                System.Data.SqlClient.SqlConnection sqld = new System.Data.SqlClient.SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqld.Open();

                string sqlDatas = "SELECT * FROM mensalidade where codigoMensalidadeValor = " + codigoMensalidadeMax;

                System.Data.SqlClient.SqlCommand cmdPegarDatas = new System.Data.SqlClient.SqlCommand(sqlDatas, sqlc);
                System.Data.SqlClient.SqlDataReader drPegarDatas = cmdPegarDatas.ExecuteReader();
                drPegarDatas.Read();

                string codigoAnoLetivo = drPegarDatas["codigoAnoLetivo"].ToString();
                string codigoSerie = drPegarDatas["codigoSerie"].ToString();
                string codigoTurma = drPegarDatas["codigoTurma"].ToString();
                string codigoMesInicial = drPegarDatas["codigoMesInicial"].ToString();
                string codigoMesFinal = drPegarDatas["codigoMesFinal"].ToString();
                string jurosDiariosMensalidade = drPegarDatas["juroDiarioMensalidade"].ToString();
                string jurosMoraMensalidade = drPegarDatas["juroMoraMensalidade"].ToString();

                cmdPegarDatas.Dispose();
                drPegarDatas.Close();

                string sqlVerificarData = "SELECT * FROM mensalidade where codigoMensalidadeValor <> " + codigoMensalidadeMax + " and codigoSerie = " + codigoSerie + " and codigoTurma = " + codigoTurma + " and codigoAnoLetivo = " + codigoAnoLetivo + "";

                System.Data.SqlClient.SqlCommand cmdPegarVerificarData = new System.Data.SqlClient.SqlCommand(sqlVerificarData, sqlc);
                               
                System.Data.SqlClient.SqlDataReader drPegarVerificarData = cmdPegarVerificarData.ExecuteReader();

                if (drPegarVerificarData.HasRows)
                {
                    while (drPegarVerificarData.Read())
                    {
                        string mesInicial = drPegarVerificarData["codigoMesInicial"].ToString();
                        string mesFinal = drPegarVerificarData["codigoMesFinal"].ToString();

                        if (Convert.ToInt32(codigoMesInicial) >= Convert.ToInt32(mesInicial) && Convert.ToInt32(codigoMesInicial) <= Convert.ToInt32(mesFinal)) 
                     
                        {
                            string sqlDelDet = "delete from mensalidade where codigoMensalidadeValor = " + codigoMensalidadeMax;

                            System.Data.SqlClient.SqlCommand del = new System.Data.SqlClient.SqlCommand(sqlDelDet, sqld);
                            del.ExecuteNonQuery();
                            del.Dispose();

                            Response.Redirect("Insert.aspx?erro=jaExiste");
                        }

                        if (Convert.ToInt32(codigoMesFinal) >= Convert.ToInt32(mesInicial) && Convert.ToInt32(codigoMesFinal) <= Convert.ToInt32(mesFinal))
                     
                        {
                            string sqlDelDet = "delete from mensalidade where codigoMensalidadeValor = " + codigoMensalidadeMax;

                            System.Data.SqlClient.SqlCommand del = new System.Data.SqlClient.SqlCommand(sqlDelDet, sqld);
                            del.ExecuteNonQuery();
                            del.Dispose();

                            Response.Redirect("Insert.aspx?erro=jaExiste");
                        }
                    }
                }

                cmdPegarVerificarData.Dispose();
                drPegarVerificarData.Close();

                //DateTime Hoje = DateTime.Now;
                //string dataAtual = Hoje.ToString("dd/MM/yyyy");

                //if (codigoMesInicial == "")
                //{
                //    codigoMesInicial = dataAtual;
                //}

                //TimeSpan dif = Convert.ToInt32(codigoMesFinal).Subtract(Convert.ToInt32(codigoMesInicial));

                //if (dif.Days > 0)
                //{
                //    Response.Redirect(table.ListActionPath);
                //}
                //else
                //{
                //    string sqlDelDet = "delete from mensalidade where codigoMensalidadeValor = " + codigoMensalidadeValorMax;

                //    System.Data.SqlClient.SqlCommand del = new System.Data.SqlClient.SqlCommand(sqlDelDet, sqlc);
                //    del.ExecuteNonQuery();
                //    del.Dispose();

                    //Response.Redirect("Insert.aspx?erro=dataMenor");
                //}

                Response.Redirect(table.ListActionPath);

                sqlc.Close();
                sqld.Close();
            }
        }

        protected void lstAnoLetivo_SelectedIndexChanged(object sender, EventArgs e)
        {

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            lstSerie.Items.Clear();
            lstTurma.Items.Clear();

            //Carregar séries

            string sqlSerie = "select * from serie where codigoAnoLetivo = " + lstAnoLetivo.SelectedValue;

            SqlCommand cmdSerie = new SqlCommand(sqlSerie, sqlc);
            SqlDataReader myReaderSerie = cmdSerie.ExecuteReader();

            ListItem serieSelecione = new ListItem();
            serieSelecione.Value = "0";
            serieSelecione.Text = "Selecione uma série";

            lstSerie.Items.Add(serieSelecione);

            while (myReaderSerie.Read())
            {

                ListItem serie = new ListItem();

                serie.Value = myReaderSerie["codigoSerie"].ToString();
                serie.Text = myReaderSerie["descricaoSerie"].ToString();

                lstSerie.Items.Add(serie);

            }

            cmdSerie.Dispose();
            myReaderSerie.Close();
            sqlc.Close();
            //Finalizar carregamento de séries

        }

        protected void lstSerie_SelectedIndexChanged(object sender, EventArgs e)
        {

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            lstTurma.Items.Clear();

            //Carregar séries

            string sqlSerie = "select * from turma where codigoSerie = " + lstSerie.SelectedValue;

            SqlCommand cmdSerie = new SqlCommand(sqlSerie, sqlc);
            SqlDataReader myReaderSerie = cmdSerie.ExecuteReader();

            ListItem serieSelecione = new ListItem();
            serieSelecione.Value = "0";
            serieSelecione.Text = "Selecione uma turma";

            lstTurma.Items.Add(serieSelecione);

            while (myReaderSerie.Read())
            {

                ListItem serie = new ListItem();

                serie.Value = myReaderSerie["codigoTurma"].ToString();
                serie.Text = myReaderSerie["descricaoTurma"].ToString();

                lstTurma.Items.Add(serie);

            }

            cmdSerie.Dispose();
            myReaderSerie.Close();
            sqlc.Close();
            //Finalizar carregamento de séries
        }


      
    }
}
